﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BUS;
using DTO;

namespace DoAn
{
    public partial class frThemHoaDon : Form
    {
        public frThemHoaDon()
        {
            InitializeComponent();
        }
        private void frThemHoaDon_Load(object sender, EventArgs e)
        {
            List<HTTTDTO> htdto = new List<HTTTDTO>();
            HTTTBUS htbus = new HTTTBUS();
            htdto = htbus.LayHTTT();
            cbbHTTT.DataSource = htdto;
            cbbHTTT.ValueMember = "MaHTTT";
            cbbHTTT.DisplayMember = "TenHTTT";            

            List<NhanVienDTO> nvdto = new List<NhanVienDTO>();
            NhanVienBUS nvbus = new NhanVienBUS();
            nvdto = nvbus.LayDSNV();
            cbbNhanVien.DataSource = nvdto;
            cbbNhanVien.ValueMember = "MaNV";
            cbbNhanVien.DisplayMember = "MaVaTen";

            for (int i = 0; i < 31; i++)
            {
                if (i < 12)
                    cbbThang.Items.Add(i + 1);
                cbbNgay.Items.Add(i + 1);
                cbbNam.Items.Add(2000 + i);
            }

            List<KhachHangDTO> khdto = new List<KhachHangDTO>();
            KhachHangBUS khbus = new KhachHangBUS();
            khdto = khbus.LayKhachHang();
            cbbKhachHang.DataSource = khdto;
            cbbKhachHang.ValueMember = "MaKH";
            cbbKhachHang.DisplayMember = "MaVaTen";

            cbbNgay.Text = "Ngày";
            cbbThang.Text = "Tháng";
            cbbNam.Text = "Năm";
        }
        private bool ThemHoaDon()
        {
            if (txtMaHoaDon.Text == "")
            {
                MessageBox.Show("Bạn chưa nhập mã hóa đơn.", "Lỗi");
                return false;
            }    
            NhanVienBUS nvBus = new NhanVienBUS();
            List<NhanVienDTO> listnv = new List<NhanVienDTO>();
            listnv = nvBus.LayDSNV();
            string maNV = "";
            for (int i = 0; i < listnv.Count; i++)
                if (listnv[i].MaVaTen == cbbNhanVien.Text)
                    maNV = listnv[i].MaNV;
            if (maNV == "")
            {
                MessageBox.Show("Bạn cần chọn một nhân viên.", "Lỗi");
                return false;
            }
            KhachHangBUS khBus = new KhachHangBUS();
            List<KhachHangDTO> listkh = new List<KhachHangDTO>();
            listkh = khBus.LayKhachHang();
            string maKH = "";
            for (int i = 0; i < listkh.Count; i++)
                if (listkh[i].MaVaTen == cbbKhachHang.Text)
                    maKH = listkh[i].MaKH;
            if (maKH == "")
            {
                MessageBox.Show("Bạn cần chọn một khách hàng.", "Lỗi");
                return false;
            }
            if (txtSoPhieuXuat.Text == "")
            {
                MessageBox.Show("Bạn chưa nhập số phiếu xuất.", "Lỗi");
                return false;
            }
            int maHTTT = -1;
            List<HTTTDTO> httt = new List<HTTTDTO>();
            HTTTBUS htbus = new HTTTBUS();
            httt = htbus.LayHTTT();
            for (int i = 0; i < httt.Count; i++)
                if (httt[i].TenHTTT == cbbHTTT.Text)
                    maHTTT = httt[i].MaHTTT;
            if (maHTTT == -1)
            {
                MessageBox.Show("Bạn cần chọn HTTT.", "Lỗi");
                return false;
            }
            try { DateTime.Parse(cbbThang.Text + '/' + cbbNgay.Text + '/' + cbbNam.Text); }
            catch
            {
                MessageBox.Show("Ngày thanh toán không hợp lệ.", "Lỗi");
                return false;
            }            
            if (txtTongGiaTri.Text == "")
            {
                MessageBox.Show("Bạn chưa nhập tổng giá trị.", "Lỗi");
                return false;
            }

            try
            {
                HoaDonBUS hd = new HoaDonBUS();
                HoaDonDTO hdDto = new HoaDonDTO();
                hdDto.MaHoaDon = txtMaHoaDon.Text;
                hdDto.MaNV = maNV;
                hdDto.MaKH = maKH;
                hdDto.SoPhieuXuat = txtSoPhieuXuat.Text;
                hdDto.NgayThanhToan = DateTime.Parse(cbbThang.Text + '/' + cbbNgay.Text + '/' + cbbNam.Text);
                hdDto.MaHTTT = int.Parse(cbbHTTT.SelectedValue.ToString());
                hdDto.TongGiaTri = int.Parse(txtTongGiaTri.Text);
                hdDto.GhiChu = txtGhiChu.Text;

                hd.ThemHoaDon(hdDto);
                btnLuuVaTT.DialogResult = DialogResult.OK;
                return true;
            }
            catch 
            {
                MessageBox.Show("Có thể mã hóa đơn đã tồn tại.", "Lỗi");
                return false;
            }
        }
        
        private void btnLuuVaTT_Click(object sender, EventArgs e)
        {
            if (ThemHoaDon())                          
                this.Close();            
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (ThemHoaDon())                           
                this.Close();            
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
